﻿using System;
using System.Xml;
using Framework.CapaDeDatos.Convertores;
using Framework.CapaDeDatos.Excepciones;
using Framework.CapaDeDatos.Proveedores.Persistencia;
using Framework.Modelo;

namespace Framework.CapaDeDatos.Proveedores
{
    public class Facebook : IProveedor
    {
        #region Private Fields
        private IPersistencia graphApi;
        #endregion

        #region Public Constructors

        public Facebook(IPersistencia graphApi)
        {
            if (graphApi != null)
                this.graphApi = graphApi;
            else
                throw new ExceptionParametroNulo();
        }

        #endregion

        #region IProveedor Members

        public Framework.Modelo.IObjeto Guardar(Framework.Modelo.IObjeto objeto)
        {
            XmlDocument xmlDocument = ConvertorXml.Obtener(objeto);
            XmlDocument xmlResultado = this.graphApi.Guardar(xmlDocument);
            return ConvertorXml.Obtener(xmlResultado);
        }

        public Framework.Modelo.IObjeto Recuperar(Guid guid)
        {
            XmlDocument xmlDocument = this.graphApi.Recuperar(guid);
            IObjeto resultado = ConvertorXml.Obtener(xmlDocument);
            return resultado;
        }

        #endregion
    }
}
